package com.ruoyi.system.service.impl.config;

import java.util.List;

import com.ruoyi.common.utils.translate.TransApi;
import com.ruoyi.common.utils.translate.TranslateUtil;
import com.ruoyi.system.domain.config.VsConfig;
import com.ruoyi.system.domain.video.VsLangTranslate;
import com.ruoyi.system.mapper.config.VsConfigMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.config.VsAreaCodeMapper;
import com.ruoyi.system.domain.config.VsAreaCode;
import com.ruoyi.system.service.config.IVsAreaCodeService;

/**
 * 国际区号Service业务层处理
 * 
 * @author zzx
 * @date 2024-05-27
 */
@Service
public class VsAreaCodeServiceImpl implements IVsAreaCodeService 
{
    @Autowired
    private VsAreaCodeMapper vsAreaCodeMapper;

    @Autowired
    private VsConfigMapper vsConfigMapper;

    /**
     * 查询国际区号
     * 
     * @param id 国际区号主键
     * @return 国际区号
     */
    @Override
    public VsAreaCode selectVsAreaCodeById(Long id)
    {
        return vsAreaCodeMapper.selectVsAreaCodeById(id);
    }

    /**
     * 查询国际区号列表
     * 
     * @param vsAreaCode 国际区号
     * @return 国际区号
     */
    @Override
    public List<VsAreaCode> selectVsAreaCodeList(VsAreaCode vsAreaCode)
    {
        return vsAreaCodeMapper.selectVsAreaCodeList(vsAreaCode);
    }

    /**
     * 新增国际区号
     * 
     * @param vsAreaCode 国际区号
     * @return 结果
     */
    @Override
    public int insertVsAreaCode(VsAreaCode vsAreaCode)
    {
        return vsAreaCodeMapper.insertVsAreaCode(vsAreaCode);
    }

    /**
     * 修改国际区号
     * 
     * @param vsAreaCode 国际区号
     * @return 结果
     */
    @Override
    public int updateVsAreaCode(VsAreaCode vsAreaCode)
    {
        return vsAreaCodeMapper.updateVsAreaCode(vsAreaCode);
    }

    /**
     * 批量删除国际区号
     * 
     * @param ids 需要删除的国际区号主键
     * @return 结果
     */
    @Override
    public int deleteVsAreaCodeByIds(Long[] ids)
    {
        return vsAreaCodeMapper.deleteVsAreaCodeByIds(ids);
    }

    /**
     * 删除国际区号信息
     * 
     * @param id 国际区号主键
     * @return 结果
     */
    @Override
    public int deleteVsAreaCodeById(Long id)
    {
        return vsAreaCodeMapper.deleteVsAreaCodeById(id);
    }

    @Override
    public List<VsAreaCode> translateAreaCode(List<VsAreaCode> list) {
        String languageType = list.get(0).getLanguageType();
        VsConfig config = new VsConfig();
        config.setGroup("basic");
        List<VsConfig> configList = vsConfigMapper.selectVsConfigList(config);
        String appid = null;
        String sec_key = null;
        for (VsConfig v : configList) {
            if ("app_id".equals(v.getName())) {
                appid = v.getValue();
            }
            if ("sec_key".equals(v.getName())) {
                sec_key = v.getValue();
            }
        }
        TransApi api = new TransApi(appid,sec_key);
        TranslateUtil util = new TranslateUtil();
        String result = "";
        StringBuilder keyCodeBuilder = new StringBuilder();
        for (VsAreaCode v : list) {
            keyCodeBuilder.append(v.getName()).append("\n");
        }
        if (keyCodeBuilder.length() > 0) {
            String allKeyCodes = keyCodeBuilder.toString();
            result = api.getTransResult(allKeyCodes, "auto", languageType);
            List<String> conversion = util.batchConversion(result);
            if (conversion.size() == list.size()) {
                for (int i = 0; i < conversion.size(); i++) {
                    list.get(i).setNameLang(conversion.get(i));
                }
                vsAreaCodeMapper.batchUpdateAreaCode(list);
            }
        }
        return list;
    }
}
